/*
 * @Author: intellectual-seeker 3336339701@qq.com
 * @Date: 2025-09-15 21:10:33
 * @LastEditors: intellectual-seeker 3336339701@qq.com
 * @LastEditTime: 2025-09-18 22:16:49
 * @FilePath: /code/lesson33/ThreadPool/Main.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include "ThreadPool.hpp"
#include <memory>
#include "Task.hpp"
#include <cstdlib>
#include <ctime>
#include <unistd.h>

//线程安全，单例模式
int main()
{
    LOG(INFO, "程序加载完成");//验证懒汉模式，创建是在程序加载之后

    sleep(3);
    ThreadPool<Task>::GetInstance();

    sleep(2);
    ThreadPool<Task>::GetInstance();

    sleep(2);
    ThreadPool<Task>::GetInstance();

    sleep(2);
    ThreadPool<Task>::GetInstance()->Stop();

    sleep(2);
    ThreadPool<Task>::GetInstance()->Wait();

    return 0;
}

//初版
// int main()
// {
//     EnableFile();
//     srand((size_t)time(nullptr) ^ pthread_self());

//     unique_ptr<ThreadPool<Task>> ptr = make_unique<ThreadPool<Task>>();//c++14新语法特性
//     ptr->InitThreadPool();

//     ptr->Start();

//     int cnt = 10;
//     while(cnt--)
//     {
//         int a = rand() % 10 + 1;
//         usleep(1234);//休眠1234毫秒，提高数据随机性
//         int b = rand() % 5 + 1;
        
//         ptr->Enqueue(Task(a, b));

//         sleep(1);
//     }

//     ptr->Stop();

//     ptr->Wait();

//     return  0;
// }